;; Copyright (c) 2007-2011, Florian Loitsch
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are met:
;;    * Redistributions of source code must retain the above copyright
;;      notice, this list of conditions and the following disclaimer.
;;    * Redistributions in binary form must reproduce the above copyright
;;      notice, this list of conditions and the following disclaimer in the
;;      documentation and/or other materials provided with the distribution.
;;    * Neither the name of the <organization> nor the
;;      names of its contributors may be used to endorse or promote products
;;      derived from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
;; DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
;; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
;; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

(module js-module-repl-scm
   (library js2scheme-runtime)
   (export init-declared-repl-scm
	   init-implicit-repl-scm
	   init-regexps-repl-scm
	   run-top-level-repl-scm))

(define readLine #unspecified)
(define js-display #unspecified)

(define (init-declared-repl-scm)
   (set! readLine
	 (create-declared-global (ascii->js-string-literal "readLine")))
   (set! js-display
	 (create-declared-global (ascii->js-string-literal "display"))))
(define (init-implicit-repl-scm)
   #unspecified)
(define (init-regexps-repl-scm)
   #unspecified)
(define (run-top-level-repl-scm)
   (global-set! readLine
		(js-fun
		 this #f #f #f ()
		 (utf8->js-string (read-line))))
   (global-set! js-display
		(js-fun
		 this #f #f #f (str)
		 (display (js-string->utf8 str))
		 (flush-output-port (current-output-port)))))
